使用sql语句
desc table_name
可以显示table_name表中的字段名以及Type等属性使用sql语句
alter table employees modify email null
修改email字段的属性为可以为nullmysql中使用sql语句生成一张表并且同时指定表的编码:
1234567CREATE TABLE USER(id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,nickname VARCHAR(45) NOT NULL,PASSWORD VARCHAR(45) NOT NULL,first_name VARCHAR(45) DEFAULT NULL,last_name VARCHAR(45) DEFAULT NULL) CHARACTER SET utf8 COLLATE utf8_general_ci;注意
utf8
不能写成utf-8
。
mysql中使用sql语句生成一张表并且同时指定外键:
1234567CREATE TABLE blog(id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,title VARCHAR(100) NOT NULL,content VARCHAR(255) DEFAULT NULL,user_id INT(11) NOT NULL,CONSTRAINT FK_ID FOREIGN KEY(user_id) REFERENCES USER(id)) CHARACTER SET utf8 COLLATE utf8_general_ci;如下方式可以在创建表的同时指定索引:
12345678910111213CREATE DATABASE seckill;USE seckill;CREATE TABLE seckill(`seckill_id` BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '商品库存id',`name` VARCHAR(255) NOT NULL COMMENT '商品名称',`number` INT NOT NULL COMMENT '商品数量',`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`start_time` TIMESTAMP NOT NULL COMMENT '秒杀开始时间',`end_time` TIMESTAMP NOT NULL COMMENT '秒杀结束时间',KEY idx_start_time(start_time), // 指定索引,KEY表示索引,idx_start_time为新建的索引的名字KEY idx_end_time(end_time),KEY idx_create_time(create_time)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='秒杀库存表'; // 指定字符集并且添加描述,注意和字段添加描述的不同对于自增主键,可以在创建数据库的时候指定自增主键的起始值:
1CREATE TABLE seckill() ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT='秒杀库存表'执行下面的语句可以查看表的创建过程:
1show create table seckill\G;因此在创建数据库的时候通过
COMMENT
添加注释可以有助于理解。修改表的某个字段的属性:
1alter table employees modify email null;给某个表添加一列:
1ALTER TABLE tbl_employee ADD COLUMN d_id INT(11);给某个表添加外键
1ALTER TABLE tbl_employee ADD CONSTRAINT fk_emp_dept FOREIGN KEY(d_id) REFERENCES tbl_dept(id);联合主键及索引
1234567CREATE TABLE `appointment` (`book_id` bigint(20) NOT NULL COMMENT '图书ID',`student_id` bigint(20) NOT NULL COMMENT '学号',`appoint_name` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_STAMP COMMENT '预约时间', -- 当执行update操作时,并且字段有ON UPDATE CURRENT_STAMP属性,则字段无论值有没有变化,它的值也会跟着更新为当前UPDATE操作时的时间PRIMARY KEY (`book_id`, `student_id`),INDEX `idx_appoint_time` (`appoint_time`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='预约图书表'